【レポート】Gravitonへの移行方法を学べる「AWS Graviton GameDay: Optimize your Amazon EC2 workload with Graviton」に参加しました!#AWSreInvent #CMP316
こんにちは!AWS事業本部のおつまみです。
今回はre:Invent2024のセッション「AWS Graviton GameDay: Optimize your Amazon EC2 workload with Graviton」に参加してきたので、内容をご紹介します!
セッションの概要
タイトル
AWS Graviton GameDay: Optimize your Amazon EC2 workload with Graviton
AWS Graviton GameDay: GravitonでAmazon EC2のワークロードを最適化する
概要
Ready to learn more about AWS Graviton in an immersive environment? In this team-based gamified learning setting, perform a live migration of your workload to Graviton. You learn how to unlock Graviton’s full price-performance potential and optimize the size of an Amazon EC2 fleet. You have the opportunity to identify CPU-architectural incompatibilities with the Porting Advisor for Graviton tool, test performance, adjust a continuous integration and delivery (CI/CD) pipeline to create ARM64 artifacts, and explore popular Graviton use cases. You must bring your laptop to participate.
没入型の環境でAWS Gravitonについて学ぶ準備はできていますか? このチームベースのゲーム化された学習環境では、Gravitonへのワークロードのライブマイグレーションを実行します。 Gravitonの価格とパフォーマンスの可能性を最大限に引き出し、Amazon EC2フリートのサイズを最適化する方法を学びます。 GravitonツールのPorting AdvisorでCPUアーキテクチャの非互換性を特定し、パフォーマンスをテストし、ARM64の成果物を作成するために継続的インテグレーションとデリバリー(CI/CD)パイプラインを調整し、人気のあるGravitonの使用例を探索する機会があります。 参加にはラップトップが必要です。
スピーカー
- Santosh Kumar, Sr. Specialist Solutions Architect - EC2 Graviton, AWS
- Tyler Jones, Sr. Specialist Solutions Architect - AWS Graviton, Amazon Web Services
レベル
300
Sesion Type
Workshop
セッションの内容
テーマ と 技術
架空の企業(ユニコーン社)にエンジニアとして入社し、x86からarmアーキテクチャのGravitonに移行するという内容でした。
現行システムの特徴と簡単な構成図は以下の通りです。
-
現行システムの特徴
-
簡単な構成図
Graviton移行は以下のステップで進みました。
- Porting Advisor for Graviton を使用して依存関係の非互換性を特定
- Unicorn.Rentals の Web サイトを x86 から Graviton に移行する
- ASGの起動テンプレートでx86→armのAMI・インスタンスファミリーに変更
- パフォーマンステストでx86・armでどのくらいのパフォーマンス差が出るか検証
またGameDay開始前にはうまく作業を進めるためのTipsも紹介してくれました。
Porting Advisor for Gravitonについて
今回私は第1問目の「Porting Advisor for Gravitonを使用して依存関係の非互換性を特定」を実施しました。
そこでPorting Advisorと呼ばれるツールを初めて使用したのでご紹介します。
Porting Advisor for Gravitonは、AWSのGravitonプロセッサへのコードの移植を支援するためのオープンソースツールです。
概要は以下の通りです。
- ソースコードを分析し、Gravitonプロセッサとの既知の非互換性を検出
- C、C++、Fortran、Python、Java、Goなどの言語をサポート
- 言語ランタイムや依存ライブラリの最小必要バージョンや推奨バージョンを提案
使い方としてはコンテナ・Pythonスクリプト・バイナリの3種類があります。
今回は検証用で立てられているEC2インスタンスに、Porting Advisor Toolを直接インストールして、そこでツールを実行することで、互換性のない依存関係を特定しました。
コマンドを実行した結果はこちらです。
$ python3 src/porting-advisor.py /home/ubuntu/PAG-Quest-App/
| Elapsed Time: 0:00:03
Porting Advisor for Graviton v1.1.1
Report date: 2024-12-03 20:12:28
655 files scanned.
detected python code. if you need pip, version 19.3 or above is recommended. we detected that you have version 22.0.2.
/home/ubuntu/PAG-Quest-App/requirements.txt:2: using dependency library numpy version 1.18.2. upgrade to at least version 1.19.0
detected python code. min version 3.7.5 is required. see https://github.com/aws/aws-graviton-getting-started/blob/main/python.md for more details.
コマンド実行による分析結果は以下の通りです。
- スキャン概要
- 合計655個のファイルがスキャン
- Pythonコードが検出
- 検出された問題点:
a) Pip(パッケージマネージャー)
- 現在のバージョン: 22.0.2
- ステータス: ✅ OK(推奨バージョン19.3以上を満たしている)
b) NumPy依存関係
- 現在のバージョン: 1.18.2
- 推奨: バージョン1.19.0以上にアップグレードが必要
- 対応: requirements.txtを更新する必要あり
c) Python要件
- 最小要件: Python 3.7.5
- 詳細情報: https://github.com/aws/aws-graviton-getting-started/blob/main/python.md
推奨される対応:
NumPyのバージョンアップグレード
# requirements.txtを編集して、NumPyのバージョンを更新 # 1.18.2 を 1.19.0 以上に変更
今回はNumPyのバージョンアップグレードが必要だと教えてくれました。
このように簡単に非互換性を特定できました!
なおこのツールを使ってみた弊社ブログやAWS Blogもあったので、気になる方は読んでみてください。
他の設問はチームメンバの方が実施してくれました。
GameDayの結果
私たちのグループは結果9位でした。
通常のGameDayと異なり、スピーカーのサポートもあってどのチームも時間内に完了させることができていました。
Graviton移行時の考慮事項について
セッション終了後、「実際は他にどのようなことを考慮しないといけないのか?」と疑問に思ったので、調査しました。
詳細はこちらに載っていました。
一連の移行手順では以下の通りでした。
- 学習と探索
- ステップ1: [オプション] Gravitonプロセッサを理解し、主要なドキュメントを確認する
- ステップ2: ワークロードを調査し、現在のソフトウェアスタックをインベントリする
- ワークロードの移行を計画
- ステップ3: アプリケーション環境をインストールして構成する
- ステップ4: [オプション] アプリケーションやコンテナイメージをビルドする
- ワークロードをテストして最適化する
- ステップ5: ワークロードのテストと最適化
- ステップ6: パフォーマンステスト
- インフラストラクチャと展開
- ステップ7: インフラストラクチャをコードとして更新する
- ステップ8:カナリアまたはブルーグリーン デプロイメントを実行する
ドキュメントを読んで、今回GameDay中には実施しなかったデプロイ戦略や運用面も計画する必要があるとわかりました。
おわりに
今回のセッションで、Graviton移行に利用できるPorting Advisor for Graviton方法を学ぶ事ができました!
Cost Optimization Hubの推奨事項で「Gravitonへの移行:実装難易度は非常に高い」と表示されているのを確認したことがあったので、どのくらい難しいのかと気になって今回セッションに参加してみました。
依存関係の確認、ビルドプロセスの修正、パフォーマンス検証など考慮事項がとても多いと感じました。
しかし、Gravitonインスタンスは同等のx86インスタンスと比べて最大40%のコスト削減が見込めるため、移行に必要な工数や技術的な課題と、得られるコストメリットを比較検討する価値は十分にあるなと思いました。
いつかGravitonインスタンス移行の案件にも携わってみたいと思いました。
最後までお読みいただきありがとうございました!
どなたかのお役に立てれば幸いです。
余談:タイトルに"GameDay"が入っていて、Session Typeが"Workshop"は注意
SESSION TYPE が"GameDay"ではなく、"Workshop"であることから、1人でもくもく進めるハンズオン形式だと思ったのですが、形式は完全にGameDayでした。
そのため、英語を話すぞ!と意気込まず、参加したため、ほとんど同じチームの方とコミュニケーションを取ることができませんでした。。。
今回参加したWorkshopとGameDayとの違いは以下の通りです。
項目 | Workshop | GameDay |
---|---|---|
参加人数 | 全12チーム(小規模) | 40〜50チーム程度 |
時間 | 80分前後と短め | 最低2時間、通常3〜4時間程度 |
優勝賞品 | 特典なし | 上位チームにリュックサックやメダルなどの特典あり |
なお去年も同じタイプのセッションがあったようです。
そのため、今後同じようなタイプのセッションに参加予定の方は、ある程度英語のコミュニケーションが必要だと認識した上で参加しましょう!
以上、おつまみ(@AWS11077)でした!